一、遇到的问题
问题1:作业19读数据的时候读不出来。
问题2:"cannot resolve symbol R"
问题3:点击Run'App'时,遇到这样的问题。
二、解决的方法
问题1:Android studio虚拟机没设置SD卡,或者没有添加权限。当真机SD卡满时,也会读不出。
找到存入的文件:打开Android Studio,点击上方菜单栏中的工具(Tools)-->Android-->Android Device Monitor[或者是Monitor(DDMS included),因版本不同,叫法不一样]。然后出现Android Device Monitor这一界面,若左边devices下没有任何东西,请关闭再按照上述步骤打开一次;若有东西,则随便点击那一个,右边都可以出现一系列文件、目录等,其中就有sdcard,然后将所需音频、视频等文件拖拽到sdcard目录下,最后,关闭该界面即可。
问题2:
R,大意是Runtime,运行时,的变量,保存了对应的信息。对应的R下面,有很多个东西,包括Layout:
而对应的解决此错误的方法是,参考其提示,去导入对应的系统的R:
import android.R;
或当前的项目的R:
import crifan.com.downloadsongtastemusic.R;
问题3:Android Studio升级到2.0,运行程序出现Session ‘app’: Error Launching activity,不能编译运行程序,发现是因为2.0的新特性“instant run”,解决办法是关闭这个功能,在File->Settings->Build, Execution,Deployment找到Instant Run,把打钩的选项都去掉,apply就可以了。
三、总结
在SQL使用过程中:
1.SQLiteOpenHelper
(1)一个管理数据库连接的辅助类,缓存了已打开的数据库对象,提供了onConfigure onCreate onOpen,getReadableDatabase getWriteableDatabase方法;数据库文件不会直接创建,而是在调用getReadableDatabase或者getWriteableDatabase时才调用onConfigure等方法完成。在这个过程中会比较传入的数据库版本号,从而调用onDowngrade onUpgrade处理升级逻辑,默认的onDowngrade直接抛出异常。同时注意只有在版本号version等于0时,才会调用onCreate方法,所以数据库建表之类的操作可以在此方法中处理。
(2)单个数据库连接 数据库相关操作都将是顺序执行的,因此使用单例的SQLiteOpenHelper,可以基本保证数据库执行的顺序性,避免操作被锁或阻塞
2.ContentProvider
ContentProvider封装后对外提供URI,内部既可以是对数据库的操作,也可以是文件甚至内存的操作。需要注意的是它提供的query delete等操作是在调用的线程中执行的,而非只在主线程。据我在Android4.X时的设备上统计,一般查询操作很快,在1ms左右,而单个的插入删除操作在10ms左右,如果希望界面流畅,在UI线程谨慎的修改数据库。